/*
    // 请求参数
    var data = {"123":"123"}
    // 获取带签名的请求参数
    var value = getReqParam('appKey','appSecret',101,data)
*/

/**
 * 获取当前时间时间戳10位
 */
function _getTimeStampX(){
    return Math.round(new Date().getTime()/1000).toString();
}

function _toUrlParams(values) {
    const keys = Object.keys(values).sort();
    const params = [];
    for (let i = 0; i < keys.length; i++) {
        const key = keys[i];
        const value = values[key];
        if (typeof value != 'object' && key !== 'sign' && value !== '') {
            params.push(key + "=" + value);
        }
    }
    return params.join("&");
}

function _makeSign(appSecret,values) {
    let str = _toUrlParams(values);
    str += '&key=' + appSecret;
    // const sign = crypto.createHash("md5")
    //     .update(str)
    //     .digest('hex');
    return hex_md5(str);
}


/**
 * @description: 获取带加密字符串的请求参数
 * @param {*} app_key  app_key
 * @param {*} app_secret app_secret
 * @param {*} values  业务参数值
 * @param {*} residueParams  剩余参数
 * @return {*}
 */
function getReqParam(app_key = '', app_secret  = '', values = null, residueParams = null){
    values = values ? values : {}
    residueParams = residueParams ? residueParams : {}
    values['app_key'] = app_key;
    values = {...values, ...residueParams}
    values['timestamp'] = _getTimeStampX();
    values['sign'] = _makeSign(app_secret, values);
    return values;
}
